package com.open.system.dispatch;

import com.open.base.model.Role;
import com.open.common.model.Page;
import com.open.system.model.dto.RoleDto;

import java.util.List;
import java.util.Map;

/**
 * 角色信息
 *
 * @author 大树03
 * @date 2025-02-01 22:55
 */
public interface IRoleDispatch{
	/**
	 * 添加对象
	 * @param model
	 * @return boolean
	 * @
	 * @date 2025-02-01 22:55
	 */
	Boolean save(Role model) ;

	/**
	 * 修改对象
	 * @param model
	 * @return boolean
	 * @
	 * @date 2025-02-01 22:55
	 */
	Boolean update(Role model) ;

	/**
	 * 根据条件查询
	 *
	 * @return
	 * @
	 */
	List<Role> findByModel(Role model) ;

	/**
	 * 根据主键查询 
	 * @param pk 主键
	 * @return Role 
	 * @
	 * @date 2025-02-01 22:55
	 */
	Role findByPk(Long pk) ;

	/**
	 * 分页查询
	 *
	 * @param page
	 * @param model
	 * @return
	 * @
	 */
	Page<Role> findPage(Page<Role> page, Role model) ;

	/**
	 * 批量添加对象
	 * @param models
	 * @return boolean
	 * @date 2025-08-14 16:02
	 */
	Boolean batchSave(List<Role> models);

	/**
	 * 批量修改对象
	 * @param models
	 * @return boolean
	 * @date 2025-08-14 16:02
	 */
	Boolean batchUpdate(List<Role> models);

	/**
	 * 根据主键删除 
	 * @param pks 主键
	 * @return boolean
	 * @
	 * @date 2025-02-01 22:55
	 */
	Boolean remove(List<Long> pks) ;

	//获得所有角色id
    List<Long> getRoleIds(Long userId);

	//获得当前用户角色id
	Long getRoleId(Long userId);

	//获取当前账号拥有的角色
	List<Role> findByUserId(Long userId);

	//获取全部角色和当前账号拥有的角色
	Map<String, List<Role>> getRoleMap(Long id);

	//分配角色
	Boolean doAssignRole(RoleDto roleDto);

	Boolean changeRole(Long roleId);
}